PHP Problem mit Suche in MySQL
am 02.12.2005 12:06:31 von Christian BeineHallo.
Vorab moechte ich sagen,dass ich geringe Kenntnisse in der PHP
Programmierung habe.Ich habe beim _googlen_ folgendes Skript gefunden,
das in einer MySQL Datenbank sucht.Im Groben funktioniert das wohl auch,
allerdings passt irgendetwas mit den Ergebnislinks nicht.
Ich das _limit_ mal auf 1 gesetzt,so dass jeder gefundene Treffer
auf einer neuen Seite angezeigt werden sollte,was aber nicht so recht
klappt.
Nach dem ersten Durchlauf ist der Ergebnislink
.../search.php?s=1&q=[suchmuster]
der so aber wohl nicht funktioniert.
Gebe ich manuell in die URL eine 2 ein ../search.php?s=2&q=[suchmuster]
passiert auch nichts.
Gebe ich eine 3 ein ../search.php?s=3&q=[suchmuster] werden ploetzlich auch
3 von 4 Ergebnissen angezeigt.
Bei einer 4 ../search.php?s=4&q=[suchmuster] werden wiederum nur 2 von 4
angezeigt.
Leider blicke ich da nicht so ganz durch.Waere jemand so nett mir zu
erkaeren,wo das Problem liegt? Wenn es nicht ein sehr grosser Aufwand ist
waere es nett,wenn vielleicht jemand das Skript so abaendern koennte,dass
die Ergebnislinks funktionieren!?
Vielen Dank im voraus.
Mfg Christian
// Get the search variable from URL
$var = @$_GET['q'] ;
$trimmed = trim($var); //trim whitespace from the stored variable
// rows to return
$limit=1;
// check for an empty string and display a message.
if ($trimmed == "")
{
echo "
Please enter a search...
";exit;
}
// check for a search parameter
if (!isset($var))
{
echo "
We dont seem to have a search parameter!
";exit;
}
//connect to your database ** EDIT REQUIRED HERE **
mysql_connect("localhost","user","pass"); //(host, username, password)
//specify database ** EDIT REQUIRED HERE **
mysql_select_db("movies") or die("Unable to select database"); //select
which database we're using
// Build SQL Query
$query = "select * from main where Titel like \"%$trimmed%\"
order by Titel"; // EDIT HERE and specify your table and field names for
the SQL query
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
// If we have no results, offer a google search as an alternative
if ($numrows == 0)
{
echo "
Results
";echo "
Sorry, your search: "" . $trimmed . "" returned zero
results
exit;
}
// next determine if s has been passed to script, if not use 0
if (empty($s)) {
$s=0;
}
// get results
$query .= " limit $s,$limit";
$result = mysql_query($query) or die("Couldn't execute query");
// display what the person searched for
echo "
You searched for: "" . $var . ""
";// begin to show results set
echo "Results";
$count = 1 + $s ;
// now you can display the results returned
while ($row= mysql_fetch_array($result)) {
$title = $row["Titel"];
echo "$count.) $title" ;
$count++ ;
}
$currPage = (($s/$limit) + 1);
//break before paging
echo "
";
// next we need to do the links to other results
if ($s>=1) { // bypass PREV link if s is 0
$prevs=($s-$limit);
print " <<
Prev 10  ";
}
// calculate number of pages needing links
$pages=intval($numrows/$limit);
// $pages now contains int of pages needed unless there is a remainder from
division
if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}
// check to see if last page
if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
// not last page so give NEXT link
$news=$s+$limit;
echo " ";
}
$a = $s + ($limit) ;
if ($a > $numrows) { $a = $numrows ; }
$b = $s + 1 ;
echo "
Showing results $b to $a of $numrows
";?>
--
Nichts ist schwieriger und nichts erfordert mehr Charakter als sich im
offenen Gegensnatz seiner Zeit zu befinden und laut zu sagen - Nein.